package skeleton;

import static test.Output.*;
import static test.Test.*;

import java.util.Dictionary;

/**
* A játék alapvetõ mûködéséért felelõ osztály
* Létrehozza a pályát, nyilvántartja a módot és pálya számát, kezeli a fõ funkciókat
*/

public class Game {

	// Egyéni azonosító
	private int id;
	
	// Az aktuális pálya
	private Level level;
	
	// A játék aktuális állapota
	private int state;
	
	// Az aktuális pálya száma
	private int levelNumber;
	
	// A pálya-fájlnév párosok
	private Dictionary<Integer, String> levels;
	
	// Ebben a módban vagyunk (micro vagy macro)
	private boolean mode;

	
	//Konstruktor
	public Game(int id) {
		this.id=id;
		create(id, "Game");
	}
	
	// Betölti a pálya alapállapotát
	public void load() {
		if (logEnabled)
			writeTest("Választás: Új játék indítása");
		call(id, "Game", "void load()");
		level.init("filename");
		
		ret(id, "Game", "");
	}

	// Betölti az elmentett állást
	public void loadSavedGame() {
		if (logEnabled)	
			writeTest("Választás: Játék betöltése");
		call(id, "Game", "void loadSavedGame()");
		
		level.init("filename");
		
		ret(id, "Game","");
	}

	// Futtatja a program fõ funkcióit
	public void run(int choose) {
		call(id, "Game", "void run()");
		level=new Level(++ID);
		
		if (choose == 1)
			this.load();
		if (choose == 2)
			this.loadSavedGame();
			
		ret(id, "Game", "");		
	}

	// Elmenti az aktuális pályát
	public void save() {
		call(id, "Game", "void save()");
		ret(id, "Game", "");
	}

	// Megváltoztatja a játékmódot
	public void changeMode() {
		call(id, "Game", "void changeMode()");
		ret(id, "Game", "");
	}
	
	//Csak a teszteléshez kell, hogy a teszteseteknél kívülröl is el tudjuk érni a levelt
	public Level getLevel(){
		return this.level;
	}
	
	//Csak a teszteléshez kell, hogy a teszteseteknél kívülröl is el tudjuk érni a levelt
	public void setLevel(Level lev){
		this.level=lev;
	}
}